package com.aaa.forum.services;

import com.aaa.forum.model.Collection;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface ICollectionService {
    /**
     *
     * @param userId    用户id
     */
    /**
     * 根据用户id, 获取的收藏夹列表
     * 根据 isOwn 参数判断获取权限
     *
     * isOwn 为 true 时, 表示获取自己的全部收藏夹
     * isOwn 为 false 时, 表示获取他人公开的收藏夹
     *
     * @param userId    用户id
     * @param isOwn     是否获取自己的收藏夹
     */
    List<Collection> selectALlByUserId(Long userId, Boolean isOwn);

    /**
     * 创建一个收藏夹
     * @param userId    用户id
     * @param name      收藏夹名称
     */
    void create(Long userId, String name);

    /**
     * 修改收藏夹名称
     * @param id    收藏夹id
     * @param name  收藏夹名称
     */
    void modifyName(Long id, String name);

    /**
     * 修改收藏夹状态
     * @param id        收藏夹id
     * @param state     收藏夹状态
     */
    void modifyState(Long id, Byte state);

    /**
     * 删除收藏夹
     * 删除收藏夹后，将该收藏夹下的收藏内容，全部移动到默认收藏夹中
     * @param id    收藏夹id
     */
    @Transactional
    void deleteById(Long id);

    /**
     * 根据收藏夹id查询
     * @param id    收藏夹id
     */
    Collection selectById(Long id);
}
